#pragma once
#ifndef SMPPBINARYENCODER_HPP
#define SMPPBINARYENCODER_HPP

#include "SMPPBind.hpp"
#include "SMPPBindResp.hpp"
#include "SMPPOutbind.hpp"
#include "SMPPUnbind.hpp"
#include "SMPPUnbindResp.hpp"
#include "SMPPEnquireLink.hpp"
#include "SMPPEnquireLinkResp.hpp"
#include "SMPPAlertNotification.hpp"
#include "SMPPGenericNack.hpp"
#include "SMPPSubmitSM.hpp"
#include "SMPPSubmitSMResp.hpp"
#include "SMPPDataSM.hpp"
#include "SMPPDataSMResp.hpp"
#include "SMPPSubmitMulti.hpp"
#include "SMPPSubmitMultiResp.hpp"
#include "SMPPDeliverSM.hpp"
#include "SMPPDeliverSMResp.hpp"
#include "SMPPBroadcastSM.hpp"
#include "SMPPBroadcastSMResp.hpp"
#include "SMPPCancelSM.hpp"
#include "SMPPCancelSMResp.hpp"
#include "SMPPQuerySM.hpp"
#include "SMPPQuerySMResp.hpp"
#include "SMPPReplaceSM.hpp"
#include "SMPPReplaceSMResp.hpp"
#include "SMPPQueryBroadcastSM.hpp"
#include "SMPPQueryBroadcastSMResp.hpp"
#include "SMPPCancelBroadcastSM.hpp"
#include "SMPPCancelBroadcastSMResp.hpp"
#include <QByteArray>

using namespace smpp::pdu;

namespace smpp{
namespace encoder{

class SMPP_DLLPRFX Encoder{
	QByteArray _Massive;
public:
	Encoder();

	Encoder(const Encoder &);

	void setMassive(const QByteArray &);

	const QByteArray getMassive() const;

	void clearMassive();

	void _quint8(const quint8);

	void _quint16(const quint16);

	void _quint32(const quint32);

	void _octetString(const octetString &);

	void _CoctetString(const CoctetString &);

	void _Header(const Header &);

	void _TLVbase(const TLV &);

	void _AdditionalStatusInfoText(
		const AdditionalStatusInfoText &);

	void _AlertOnMessageDelivery(
		const AlertOnMessageDelivery &);

	void _BillingIdentification(
		const BillingIdentification &);

	void _BroadcastAreaIdentifier(
		const BroadcastAreaIdentifier &);

	void _BroadcastAreaSuccess(
		const BroadcastAreaSuccess &);

	void _BroadcastChannelIndicator(
		const BroadcastChannelIndicator &);

	void _BroadcastContentType(
		const BroadcastContentType &);

	void _BroadcastContentTypeInfo(
		const BroadcastContentTypeInfo &);

	void _BroadcastEndTime(
		const BroadcastEndTime &);

	void _BroadcastErrorStatus(
		const BroadcastErrorStatus &);	

	void _BroadcastFrequencyInterval(
		const BroadcastFrequencyInterval &);

	void _BroadcastMessageClass(
		const BroadcastMessageClass &);

	void _BroadcastRepNum(
		const BroadcastRepNum &);

	void _BroadcastServiceGroup(
		const BroadcastServiceGroup &);

	void _CallbackNum(
		const CallbackNum &);

	void _CallbackNumAtag(
		const CallbackNumAtag &);

	void _CallbackNumPresInd(const CallbackNumPresInd &
		);

	void _CongestionState(
		const CongestionState &);

	void _DeliveryFailureReason(
		const DeliveryFailureReason &);

	void _DestAddrNpCountry(
		const DestAddrNpCountry &);

	void _DestAddrNpInformation(
		const DestAddrNpInformation &);

	void _DestAddrNpResolution(
		const DestAddrNpResolution &);

	void _DestAddrSubunit(
		const DestAddrSubunit &);

	void _DestBearerType(
		const DestBearerType &);

	void _DestNetworkId(
		const DestNetworkId &);

	void _DestNetworkType(
		const DestNetworkType &);

	void _DestNodeId(
		const DestNodeId &);

	void _DestPort(
		const DestPort &);

	void _DestSubaddress(
		const DestSubaddress &);

	void _DestTelematicsId(
		const DestTelematicsId &);

	void _DisplayTime(
		const DisplayTime &);

	void _DpfResult(
		const DpfResult &);

	void _ItsReplyType(
		const ItsReplyType &);

	void _ItsSessionInfo(
		const ItsSessionInfo &);

	void _LanguageIndicator(
		const LanguageIndicator &);

	void _MessagePayload(
		const MessagePayload &);

	void _MessageState(
		const MessageState &);

	void _MoreMessagesToSend(
		const MoreMessagesToSend &);

	void _MsAvailabilityStatus(
		const MsAvailabilityStatus &);

	void _MsMsgWaitFacilities(
		const MsMsgWaitFacilities &);

	void _MsValidity(
		const MsValidity &);

	void _NetworkErrorCode(
		const NetworkErrorCode &);

	void _NumberOfMessages(
		const NumberOfMessages &);

	void _PayloadType(
		const PayloadType &);

	void _PrivacyIndicator(
		const PrivacyIndicator &);

	void _QosTimeToLive(
		const QosTimeToLive &);

	void _ReceiptedMessageId(
		const ReceiptedMessageId &);

	void _SarMsgRefNum(
		const SarMsgRefNum &);

	void _SarSegmentSeqnum(
		const SarSegmentSeqnum &);

	void _SarTotalSegments(
		const SarTotalSegments &);

	void _SrInterfaceVersion(
		const SrInterfaceVersion &);

	void _SetDpf(
		const SetDpf &);

	void _SmsSignal(
		const SmsSignal &);

	void _SourceAddrSubunit(
		const SourceAddrSubunit &);

	void _SourceBearerType(
		const SourceBearerType &);

	void _SourceNetworkId(
		const SourceNetworkId &);

	void _SourceNetworkType(
		const SourceNetworkType &);

	void _SourceNodeId(
		const SourceNodeId &);

	void _SourcePort(
		const SourcePort &);

	void _SourceSubaddress(
		const SourceSubaddress &);

	void _SourceTelematicsId(
		const SourceTelematicsId &);

	void _UserMessageReference(
		const UserMessageReference &);

	void _UserResponseCode(
		const UserResponseCode &);

	void _UssdServiceOp(
		const UssdServiceOp &);

	void _CancelBroadcastOptionalTLVs(
		const CancelBroadcastOptionalTLVs &);

	void _QueryBroadcastRequestOptionalTLVs(
		const QueryBroadcastRequestOptionalTLVs &);

	void _QueryBroadcastResponseOptionalTLVs(
		const QueryBroadcastResponseOptionalTLVs &);

	void _MessageReplacementTLVs(
		const MessageReplacementTLVs &);

	void _BroadcastRequestOptionalTLVs(
		const BroadcastRequestOptionalTLVs &);

	void _BroadcastResponseOptionalTLVs(
		const BroadcastResponseOptionalTLVs &);

	void _MessageDeliveryRequestTLVs(
		const MessageDeliveryRequestTLVs &);

	void _MessageDeliveryResponseTLVs(
		const MessageDeliveryResponseTLVs &);

	void _MessageSubmissionRequestTLVs(
		const MessageSubmissionRequestTLVs &);

	void _MessageSubmissionResponseTLVs(
		const MessageSubmissionResponseTLVs &);

	void _Bind(const Bind &);

	void _BindResp(const BindResp &);

	void _Outbind(const Outbind &);

	void _Unbind(const Unbind &);

	void _UnbindResp(const UnbindResp &);

	void _EnquireLink(const EnquireLink &);

	void _EnquireLinkResp(const EnquireLinkResp &);

	void _AlertNotification(const AlertNotification &);

	void _GenericNack(const GenericNack &);

	void _SubmitSM(const SubmitSM &);

	void _SubmitSMResp(const SubmitSMResp &);

	void _DataSM(const DataSM &);

	void _DataSMResp(const DataSMResp &);

	void _SubmitMulti(const SubmitMulti &);

	void _SubmitMultiResp(const SubmitMultiResp &);

	void _DeliverSM(const DeliverSM &);

	void _DeliverSMResp(const DeliverSMResp &);

	void _BroadcastSM(const BroadcastSM &);

	void _BroadcastSMResp(const BroadcastSMResp &);

	void _CancelSM(const CancelSM &);

	void _CancelSMResp(const CancelSMResp &);

	void _QuerySM(const QuerySM &);

	void _QuerySMResp(const QuerySMResp &);

	void _ReplaceSM(const ReplaceSM &);

	void _ReplaceSMResp(const ReplaceSMResp &);

	void _QueryBroadcastSM(const QueryBroadcastSM &);

	void _QueryBroadcastSMResp(const QueryBroadcastSMResp &);

	void _CancelBroadcastSM(const CancelBroadcastSM &);

	void _CancelBroadcastSMResp(const CancelBroadcastSMResp &);
};

}
}

#endif
